#include "BulletCollision/CollisionShapes/btConvexPolyhedron.h"
#ifdef __cplusplus
extern "C" {
#endif
btFace* bullet_NewbtFace(){
	btFace* wrap_out = new btFace();
	return wrap_out;
}

double** bullet_btFace_GetFieldOfM_plane(btFace* c_this){
	return (double**)(&c_this->m_plane);
}

btConvexPolyhedron* bullet_NewbtConvexPolyhedron(){
	btConvexPolyhedron* wrap_out = new btConvexPolyhedron();
	return wrap_out;
}

btVector3* bullet_btConvexPolyhedron_GetFieldOfM_extents(btConvexPolyhedron* c_this){
	return (btVector3*)(&c_this->m_extents);
}

btVector3* bullet_btConvexPolyhedron_GetFieldOfM_localCenter(btConvexPolyhedron* c_this){
	return (btVector3*)(&c_this->m_localCenter);
}

double bullet_btConvexPolyhedron_GetFieldOfM_radius(btConvexPolyhedron* c_this){
	return (double)(c_this->m_radius);
}

btVector3* bullet_btConvexPolyhedron_GetFieldOfMC(btConvexPolyhedron* c_this){
	return (btVector3*)(&c_this->mC);
}

btVector3* bullet_btConvexPolyhedron_GetFieldOfME(btConvexPolyhedron* c_this){
	return (btVector3*)(&c_this->mE);
}

void bullet_btConvexPolyhedron_initialize(btConvexPolyhedron* c_this){
	c_this->initialize();
}

void bullet_btConvexPolyhedron_initialize2(btConvexPolyhedron* c_this){
	c_this->initialize2();
}

void bullet_btConvexPolyhedron_project(btConvexPolyhedron* c_this,btTransform* trans,btVector3* dir,double* minProj,double* maxProj,btVector3* witnesPtMin,btVector3* witnesPtMax){
	btTransform const& c_arg_trans=(btTransform const&)(*trans);
	btVector3 const& c_arg_dir=(btVector3 const&)(*dir);
	btScalar& c_arg_minProj=(btScalar&)(*minProj);
	btScalar& c_arg_maxProj=(btScalar&)(*maxProj);
	btVector3& c_arg_witnesPtMin=(btVector3&)(*witnesPtMin);
	btVector3& c_arg_witnesPtMax=(btVector3&)(*witnesPtMax);
	c_this->project(c_arg_trans,c_arg_dir,c_arg_minProj,c_arg_maxProj,c_arg_witnesPtMin,c_arg_witnesPtMax);
}

bool bullet_btConvexPolyhedron_testContainment(btConvexPolyhedron* c_this){
	bool c_out = c_this->testContainment();
	bool wrap_out = (c_out);
	return wrap_out;
}

#ifdef __cplusplus
}
#endif
